home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / SNIP0492.ARJ / SOUND.H < prev    next >
C/C++ Source or Header  |  1991-09-14  |  4KB  |  182 lines

  1. /*
  2. **  SOUND.H
  3. **
  4. **  Original Copyright 1988-1991 by Bob Stout as part of
  5. **  the MicroFirm Function Library (MFL)
  6. **
  7. **  This subset version is functionally identical to the
  8. **  version originally published by the author in Tech Specialist
  9. **  magazine and is hereby donated to the public domain.
  10. */
  11.  
  12. #if defined(__ZTC__)
  13.  #include <int.h>
  14.  #undef int_on
  15.  #undef int_off
  16. #elif defined(__TURBOC__)
  17.  #define int_on         enable
  18.  #define int_off        disable
  19.  #ifndef inp
  20.   #define inp           inportb
  21.  #endif
  22.  #ifndef outp
  23.   #define outp          outportb
  24.  #endif
  25. #else /* assume MSC/QC */
  26.  #include <conio.h>
  27.  #define int_on         _enable
  28.  #define int_off        _disable
  29.  #define getvect        _dos_getvect
  30.  #define setvect        _dos_setvect
  31. #endif
  32.  
  33. /* defines for mktone() update parameter: */
  34.  
  35. #define ON 0          /* turn the speaker on */
  36. #define UPDATE 1      /* sound is on, just change freq */
  37. #define TOGGLE 2      /* for delay use, turn on, then off */
  38.  
  39. /* port equates */
  40.  
  41. #define SCNTRL 0x61   /* sound control port */
  42. #define SOUNDON 0x03  /* bit mask to enable speaker */
  43. #define SOUNDOFF 0xfc /* bit mask to disable speaker */
  44. #define C8253 0x43    /* port address to control 8253 */
  45. #define SETIMER 0xb6  /* tell 8253 to expect freq data next */
  46. #define F8253 0x42    /* frequency address on 8253 */
  47.  
  48. /* frequency equates (muscical scale) */
  49. /* digit in label is octave number, S indicates Sharp (#) */
  50.  
  51. #define C0      36489
  52. #define CS0     34445
  53. #define D0      32512
  54. #define DS0     30673
  55. #define E0      28961
  56. #define F0      27329
  57. #define FS0     25804
  58. #define G0      24351
  59. #define GS0     22981
  60. #define A0      21694
  61. #define AS0     20473
  62. #define B0      19326
  63.  
  64. #define C1      18244
  65. #define CS1     17218
  66. #define D1      16251
  67. #define DS1     15340
  68. #define E1      14480
  69. #define F1      13668
  70. #define FS1     12899
  71. #define G1      12175
  72. #define GS1     11493
  73. #define A1      10847
  74. #define AS1     10238
  75. #define B1      9663
  76.  
  77. #define C2      9121
  78. #define CS2     8609
  79. #define D2      8126
  80. #define DS2     7670
  81. #define E2      7239
  82. #define F2      6833
  83. #define FS2     6450
  84. #define G2      6088
  85. #define GS2     5746
  86. #define A2      5424
  87. #define AS2     5119
  88. #define B2      4832
  89.  
  90. #define C3      4561
  91. #define CS3     4305
  92. #define D3      4063
  93. #define DS3     3835
  94. #define E3      3620
  95. #define F3      3417
  96. #define FS3     3225
  97. #define G3      3044
  98. #define GS3     2873
  99. #define A3      2712
  100. #define AS3     2560
  101. #define B3      2416
  102.  
  103. #define C4      2280
  104. #define CS4     2152
  105. #define D4      2032
  106. #define DS4     1917
  107. #define E4      1810
  108. #define F4      1708
  109. #define FS4     1612
  110. #define G4      1522
  111. #define GS4     1437
  112. #define A4      1356
  113. #define AS4     1280
  114. #define B4      1210
  115.  
  116. #define C5      1140
  117. #define CS5     1076
  118. #define D5      1016
  119. #define DS5     959
  120. #define E5      905
  121. #define F5      854
  122. #define FS5     806
  123. #define G5      761
  124. #define GS5     718
  125. #define A5      678
  126. #define AS5     640
  127. #define B5      604
  128.  
  129. #define C6      570
  130. #define CS6     538
  131. #define D6      508
  132. #define DS6     479
  133. #define E6      449
  134. #define F6      427
  135. #define FS6     403
  136. #define G6      380
  137. #define GS6     359
  138. #define A6      339
  139. #define AS6     320
  140. #define B6      302
  141.  
  142. #define C7      285
  143. #define CS7     269
  144. #define D7      254
  145. #define DS7     240
  146. #define E7      226
  147. #define F7      214
  148. #define FS7     202
  149. #define G7      190
  150. #define GS7     180
  151. #define A7      169
  152. #define AS7     160
  153. #define B7      151
  154.  
  155. #define C8      143
  156.  
  157. #define REST    0
  158.  
  159. typedef struct
  160. {
  161.         unsigned int      freq;
  162.         unsigned int      duration;
  163. } NOTE;
  164.  
  165. #if __cplusplus
  166.  extern "C" {
  167. #endif
  168.  
  169. void  mktone(int, int, unsigned),
  170.       dosound(int),
  171.       soundon(void),
  172.       soundoff(void),
  173.       playb_close(void);
  174.  
  175. int   playb_note(unsigned, unsigned);
  176.  
  177. NOTE *playb_open(unsigned);
  178.  
  179. #if __cplusplus
  180.  }
  181. #endif
  182.